package com.dkd.manage.mapper;

import com.dkd.manage.domain.po.Channel;
import com.dkd.manage.domain.vo.ChannelVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 售货机货道Mapper接口
 *
 * @author ming
 * @date 2024-10-26
 */
public interface ChannelMapper {

    /**
     * 查询售货机货道
     *
     * @param id 售货机货道主键
     * @return 售货机货道
     */
    Channel selectChannelById(Long id);

    @Select("select * from tb_channel where inner_code = #{innerCode} and channel_code = #{channelCode}")
    Channel selectChannelInfo(@Param("innerCode") String innerCode, @Param("channelCode") String channelCode);

    /**
     * 查询售货机货道列表
     *
     * @param channel 售货机货道
     * @return 售货机货道集合
     */
    List<ChannelVo> selectChannelVoList(Channel channel);

    /**
     * 新增售货机货道
     *
     * @param channel 售货机货道
     * @return 结果
     */
    int insertChannel(Channel channel);

    /**
     * 批量插入货道信息
     *
     * @param channels 货道列表
     * @return 结果
     */
    int insertBatchChannel(@Param("list") List<Channel> channels);

    /**
     * 修改售货机货道
     *
     * @param channel 售货机货道
     * @return 结果
     */
    int updateChannel(Channel channel);

    @Update("update tb_channel set sku_id = #{skuId} where inner_code = #{innerCode} and channel_code = #{channelCode}")
    int updateBatchConfig(Channel channel);

    /**
     * 删除售货机货道
     *
     * @param id 售货机货道主键
     * @return 结果
     */
    int deleteChannelById(Long id);

    /**
     * 批量删除售货机货道
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteChannelByIds(Long[] ids);

    int countChannelBySkuIds(Long[] skuIds);


}
